linalg_rz Module


Uses


Interfaces

public interface mult_rz

  • private subroutine mult_rz_mtx(lside, trans, l, a, tau, c, work, olwork, err)

    Multiplies a general matrix by the orthogonal matrix Z from an RZ factorization such that or

    Arguments

    Type IntentOptional Attributes Name
    logical, intent(in) :: lside

    Set to true to compute ; else, set to false to compute .

    logical, intent(in) :: trans

    Set to true if ; else, set to false if .

    integer(kind=int32), intent(in) :: l

    The number of columns in matrix containing the meaningful part of the Householder vectors. If lside is true, ; else, if lside is false, .

    real(kind=real64), intent(inout), dimension(:,:) :: a

    On input the -by- matrix , where if lside is true; else, if lside is false. The I-th row must contain the Householder vector in the last rows. Notice, the contents of this matrix are restored on exit.

    real(kind=real64), intent(in), dimension(:) :: tau

    A -element array containing the scalar factors of the elementary reflectors, where if lside is true; else, if lside is false.

    real(kind=real64), intent(inout), dimension(:,:) :: c

    On input, the -by- matrix . On output, the product of the orthogonal matrix and the original matrix .

    real(kind=real64), intent(out), optional, target, dimension(:) :: work

    An optional input, that if provided, prevents any local memory allocation. If not provided, the memory required is allocated within. If provided, the length of the array must be at least olwork.

    integer(kind=int32), intent(out), optional :: olwork

    An optional output used to determine workspace size. If supplied, the routine determines the optimal size for @p work, and returns without performing any actual calculations.

    class(errors), intent(inout), optional, target :: err

    The error object to be updated.

  • private subroutine mult_rz_mtx_cmplx(lside, trans, l, a, tau, c, work, olwork, err)

    Multiplies a general matrix by the orthogonal matrix Z from an RZ factorization such that or .

    Arguments

    Type IntentOptional Attributes Name
    logical, intent(in) :: lside

    Set to true to compute ; else, set to false to compute .

    logical, intent(in) :: trans

    Set to true if ; else, set to false if .

    integer(kind=int32), intent(in) :: l

    The number of columns in matrix containing the meaningful part of the Householder vectors. If lside is true, ; else, if lside is false, .

    complex(kind=real64), intent(inout), dimension(:,:) :: a

    On input the -by- matrix , where if lside is true; else, if lside is false. The I-th row must contain the Householder vector in the last rows. Notice, the contents of this matrix are restored on exit.

    complex(kind=real64), intent(in), dimension(:) :: tau

    A -element array containing the scalar factors of the elementary reflectors, where if lside is true; else, if lside is false.

    complex(kind=real64), intent(inout), dimension(:,:) :: c

    On input, the -by- matrix . On output, the product of the orthogonal matrix and the original matrix .

    complex(kind=real64), intent(out), optional, target, dimension(:) :: work

    An optional input, that if provided, prevents any local memory allocation. If not provided, the memory required is allocated within. If provided, the length of the array must be at least olwork.

    integer(kind=int32), intent(out), optional :: olwork

    An optional output used to determine workspace size. If supplied, the routine determines the optimal size for @p work, and returns without performing any actual calculations.

    class(errors), intent(inout), optional, target :: err

    The error object to be updated.

  • private subroutine mult_rz_vec(trans, l, a, tau, c, work, olwork, err)

    Multiplies a general matrix by the orthogonal matrix Z from an RZ factorization such that .

    Arguments

    Type IntentOptional Attributes Name
    logical, intent(in) :: trans

    Set to true if ; else, set to false if .

    integer(kind=int32), intent(in) :: l

    The number of columns in matrix containing the meaningful part of the Householder vectors.

    real(kind=real64), intent(inout), dimension(:,:) :: a

    On input the -by- matrix . The I-th row must contain the Householder vector in the last rows. Notice, the contents of this matrix are restored on exit.

    real(kind=real64), intent(in), dimension(:) :: tau

    An -element array containing the scalar factors of the elementary reflectors.

    real(kind=real64), intent(inout), dimension(:) :: c

    On input, the -element array . On output, the product of and .

    real(kind=real64), intent(out), optional, target, dimension(:) :: work

    An optional input, that if provided, prevents any local memory allocation. If not provided, the memory required is allocated within. If provided, the length of the array must be at least olwork.

    integer(kind=int32), intent(out), optional :: olwork

    An optional output used to determine workspace size. If supplied, the routine determines the optimal size for @p work, and returns without performing any actual calculations.

    class(errors), intent(inout), optional, target :: err

    The error object to be updated.

  • private subroutine mult_rz_vec_cmplx(trans, l, a, tau, c, work, olwork, err)

    Multiplies a general matrix by the orthogonal matrix Z from an RZ factorization such that .

    Arguments

    Type IntentOptional Attributes Name
    logical, intent(in) :: trans

    Set to true if ; else, set to false if .

    integer(kind=int32), intent(in) :: l

    The number of columns in matrix containing the meaningful part of the Householder vectors.

    complex(kind=real64), intent(inout), dimension(:,:) :: a

    On input the -by- matrix . The I-th row must contain the Householder vector in the last rows. Notice, the contents of this matrix are restored on exit.

    complex(kind=real64), intent(in), dimension(:) :: tau

    An -element array containing the scalar factors of the elementary reflectors.

    complex(kind=real64), intent(inout), dimension(:) :: c

    On input, the -element array . On output, the product of and .

    complex(kind=real64), intent(out), optional, target, dimension(:) :: work

    An optional input, that if provided, prevents any local memory allocation. If not provided, the memory required is allocated within. If provided, the length of the array must be at least olwork.

    integer(kind=int32), intent(out), optional :: olwork

    An optional output used to determine workspace size. If supplied, the routine determines the optimal size for @p work, and returns without performing any actual calculations.

    class(errors), intent(inout), optional, target :: err

    The error object to be updated.

public interface rz_factor

  • private subroutine rz_factor_dbl(a, tau, work, olwork, err)

    Factors an upper trapezoidal matrix by means of orthogonal transformations such that . is an orthogonal matrix of dimension N-by-N, and is an M-by-M upper triangular matrix.

    Arguments

    Type IntentOptional Attributes Name
    real(kind=real64), intent(inout), dimension(:,:) :: a

    On input, the M-by-N upper trapezoidal matrix to factor. On output, the leading M-by-M upper triangular part of the matrix contains the upper triangular matrix , and elements N-L+1 to N of the first M rows of , with the array tau, represent the orthogonal matrix as a product of M elementary reflectors.

    real(kind=real64), intent(out), dimension(:) :: tau

    An M-element array used to store the scalar factors of the elementary reflectors.

    real(kind=real64), intent(out), optional, target, dimension(:) :: work

    An optional input, that if provided, prevents any local memory allocation. If not provided, the memory required is allocated within. If provided, the length of the array must be at least olwork.

    integer(kind=int32), intent(out), optional :: olwork

    An optional output used to determine workspace size. If supplied, the routine determines the optimal size for @p work, and returns without performing any actual calculations.

    class(errors), intent(inout), optional, target :: err

    The error object to be updated.

  • private subroutine rz_factor_cmplx(a, tau, work, olwork, err)

    Factors an upper trapezoidal matrix by means of orthogonal transformations such that . is an orthogonal matrix of dimension N-by-N, and is an M-by-M upper triangular matrix.

    Arguments

    Type IntentOptional Attributes Name
    complex(kind=real64), intent(inout), dimension(:,:) :: a

    On input, the M-by-N upper trapezoidal matrix to factor. On output, the leading M-by-M upper triangular part of the matrix contains the upper triangular matrix , and elements N-L+1 to N of the first M rows of , with the array tau, represent the orthogonal matrix as a product of M elementary reflectors.

    complex(kind=real64), intent(out), dimension(:) :: tau

    An M-element array used to store the scalar factors of the elementary reflectors.

    complex(kind=real64), intent(out), optional, target, dimension(:) :: work

    An optional input, that if provided, prevents any local memory allocation. If not provided, the memory required is allocated within. If provided, the length of the array must be at least olwork.

    integer(kind=int32), intent(out), optional :: olwork

    An optional output used to determine workspace size. If supplied, the routine determines the optimal size for @p work, and returns without performing any actual calculations.

    class(errors), intent(inout), optional, target :: err

    The error object to be updated.